public class Solution {
    public static void nextPermutation(int[] nums) {
        int i = nums.length - 2;
        int p = i;
        while(i >= 0) {
            if(nums[i + 1] > nums[i]) {
                p = i;
                break;
            }
            i--;
        }
        if(i < 0) {
            Arrays.sort(nums);
        } else {
            int t = nums.length - 1;
            for(int j = nums.length - 2; j >= 0; j--) {
                if(nums[j + 1] <= nums[p] && nums[j] > nums[p] && j > p) {
                    t = j;
                    break;
                }
            }
            int temp = nums[p];
            nums[p] = nums[t];
            nums[t] = temp;
            Arrays.sort(nums, p + 1, nums.length);
        }

    }
}
